فرض کن میخوای به یه دوست پیام بدی. میتونی از کلمات معمولی استفاده کنی، یا با علامتهای خاص مثل ! یا ؟ به پیامت حالت بدی. توی لینوکس، echo مثل همون پیامرسان هست و نقل قولها ('' و "") مثل علائم خاص هستن که رفتار پیام رو تغییر میدن. این جلسه بهت یاد میده چطور با این ابزارها پیامهای حرفهای بفرستی!
echo
echo یکی از پرکاربردترین دستورات در اسکریپتنویسی است که برای نمایش پیام در خروجی استاندارد (ترمینال) استفاده میشود.
در echo، نوع نقل قول (Single Quote یا Double Quote) تأثیر مستقیمی بر روی نحوه نمایش متن دارد:
$VAR) را تفسیر میکند.$() را اجرا میکند.\n را تفسیر میکند (با -e).$VAR) را تفسیر نمیکند.$() را اجرا نمیکند.$(command) روش مدرنتر است.') همه چیز را خام (Literal) چاپ میکند، اما Double Quote (") متغیرها و دستورات را تفسیر میکند.
توضیح: Double Quote (") متغیر $name را به «Ali» تبدیل میکند، اما Single Quote (') آن را به صورت $name چاپ میکند.
توضیح: Double Quote (") دستور $(date +%A) را اجرا میکند، اما Single Quote (') آن را به صورت متن چاپ میکند.
$(command) یا `command` استفاده کنید.
در اسکریپتهای شل، میتوانید متغیرها را تعریف کرده و از آنها استفاده کنید. متغیرها به دو دسته تقسیم میشوند:
name="Ali")$USER, $HOME, $UID)
توضیح: متغیرهای days و guest تعریف شده و در خروجی استفاده میشوند.
$ قبل از نام متغیر استفاده کنید.
آرگومانهای خط فرمان ورودیهایی هستند که هنگام اجرای اسکریپت به آن داده میشوند. این آرگومانها با شماره قابل دسترسی هستند:
$0 → نام خود اسکریپت$1 → اولین آرگومان$2 → دومین آرگومان$3 → سومین آرگومان$# → تعداد کل آرگومانها$@ → همه آرگومانها به صورت جداگانه$* → همه آرگومانها به صورت یک رشته
فرض کن اسکریپت test.sh رو با دستور ./test.sh Ali 5 اجرا میکنی. در این صورت:
$0 = ./test.sh$1 = Ali$2 = 5$1, $2, ... برای دسترسی به آرگومانهای خط فرمان استفاده میشوند. $0 نام اسکریپت است.
اسکریپتی که نوشتهاید:
توضیح کامل:
#!/bin/bash → این اسکریپت با Bash اجرا میشود.# testing command line arguments → یک کامنت (توضیح) است که اجرا نمیشود.echo $1 checked in $2 days ago → این خط پیام را با استفاده از آرگومانها چاپ میکند:
$1 → اولین آرگومان (نام کاربر)$2 → دومین آرگومان (تعداد روز)
اگر اسکریپت را با ./test.sh Barbara 4 اجرا کنید، خروجی به این شکل خواهد بود:
$1 و $2 خالی خواهند بود و پیام ناقص چاپ میشود.
| نوع نقل قول | تفسیر متغیرها | اجرای دستورات | مثال |
|---|---|---|---|
| Single Quote (') | ❌ خیر | ❌ خیر | echo '$HOME' → $HOME |
| Double Quote (") | ✅ بله | ✅ بله | echo "$HOME" → /home/ya3in |
| Backtick (`) | - | ✅ بله (قدیمی) | echo `date` |
| $() | - | ✅ بله (مدرن) | echo $(date) |
name="value" تعریف و با $name استفاده میشوند.$1, $2, ... برای دریافت ورودی از خط فرمان.